package com.hc.dao;

import com.hc.pojo.Dept;
import com.hc.pojo.Emp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * 员工表
 * @author hs
 * @date 2021/05/03
 */
@Repository
public class EmpDao {
    /**
     * 员工集合
     */
    private static Map<Integer , Emp> map = null;

    /**
     * 部门对象
     */
    @Autowired
    private DeptDao deptDao;
    static {
        map = new HashMap<Integer, Emp>();
        map.put(1001,new Emp(1001,"AA","A12527445@qq.com",1,new Dept(101,"教学部")));
        map.put(1002,new Emp(1002,"BB","B12527445@qq.com",0,new Dept(102,"市场部")));
        map.put(1003,new Emp(1003,"CC","C12527445@qq.com",1,new Dept(103,"教研部")));
        map.put(1004,new Emp(1004,"DD","D12527445@qq.com",0,new Dept(104,"运营部")));
        map.put(1005,new Emp(1005,"EE","E12527445@qq.com",1,new Dept(105,"后勤部")));
    }

    /**
     * 主键自增
     */
    private static Integer initId = 1006;

    /**
     * 增加一个员工
     */
    public void save(Emp emp){
        //判断主键是否为null
        if (emp.getId() == null){
            emp.setId(initId++);
        }
        //通过部门id为员工实体类中的部门赋值
        emp.setDept(deptDao.findById(emp.getDept().getDId()));
        map.put(emp.getId(),emp);

    }

    /**
     * 查询所有员工信息
     * @return 所有员工信息
     */
    public Collection<Emp> findEmpAll(){
        return map.values();
    }

    /**
     * 根据员工id查询员工信息
     * @param id 员工id
     * @return 员工信息
     */
    public Emp findById(Integer id){
        return map.get(id);
    }

    /**
     * 删除一个员工
     * @param id 员工id
     */
    public void delete(Integer id){
        map.remove(id);
    }

    /**
     * 修改一个员工
     * @param emp
     */
    public void update(Emp emp){
        //通过部门id为员工实体类中的部门赋值
        emp.setDept(deptDao.findById(emp.getDept().getDId()));
        map.put(emp.getId(),emp);
    }
}
